home *** CD-ROM | disk | FTP | other *** search
/ SPACE 1 / SPACE - Library 1 - Volume 1.iso / program / 363 / xlisp20 / xlisp_c / xlinit.c < prev    next >
Text File  |  1990-02-03  |  4KB  |  115 lines

  1. /* xlinit.c - xlisp initialization module */
  2. /*    Copyright (c) 1985, by David Michael Betz
  3.     All Rights Reserved
  4.     Permission is granted for unrestricted non-commercial use    */
  5.  
  6. #include "xlisp.h"
  7.  
  8. /* external variables */
  9. extern NODE *true;
  10. extern NODE *s_quote,*s_function,*s_bquote,*s_comma,*s_comat;
  11. extern NODE *s_lambda,*s_macro;
  12. extern NODE *s_stdin,*s_stdout;
  13. extern NODE *s_evalhook,*s_applyhook;
  14. extern NODE *s_tracenable,*s_tlimit,*s_breakenable;
  15. extern NODE *s_car,*s_cdr,*s_get,*s_svalue,*s_splist,*s_eql;
  16. extern NODE *k_test,*k_tnot,*k_optional,*k_rest,*k_aux;
  17. extern NODE *a_subr,*a_fsubr;
  18. extern NODE *a_list,*a_sym,*a_int,*a_float,*a_str,*a_obj,*a_fptr;
  19. extern struct fdef ftab1[],ftab2[];
  20.  
  21. /* xlinit - xlisp initialization routine */
  22. xlinit()
  23. {
  24.     struct fdef *fptr;
  25.     NODE *sym;
  26.  
  27.     /* initialize xlisp (must be in this order) */
  28.     xlminit();    /* initialize xldmem.c */
  29.     xlsinit();    /* initialize xlsym.c */
  30.     xldinit();    /* initialize xldbug.c */
  31.     xloinit();    /* initialize xlobj.c */
  32.  
  33.     /* enter the builtin functions */
  34.     for (fptr = ftab1; fptr->f_name; fptr++)
  35.     xlsubr(fptr->f_name,fptr->f_type,fptr->f_fcn);
  36.     for (fptr = ftab2; fptr->f_name; fptr++)
  37.     xlsubr(fptr->f_name,fptr->f_type,fptr->f_fcn);
  38. #ifdef CPM68K
  39.     xlginit();
  40. #endif
  41. #ifdef MEGAMAX
  42.     macfinit();
  43. #endif
  44.  
  45.     /* enter the 't' symbol */
  46.     true = xlsenter("T");
  47.     true->n_symvalue = true;
  48.  
  49.     /* enter some important symbols */
  50.     s_quote    = xlsenter("QUOTE");
  51.     s_function    = xlsenter("FUNCTION");
  52.     s_bquote    = xlsenter("BACKQUOTE");
  53.     s_comma    = xlsenter("COMMA");
  54.     s_comat    = xlsenter("COMMA-AT");
  55.     s_lambda    = xlsenter("LAMBDA");
  56.     s_macro    = xlsenter("MACRO");
  57.     s_eql    = xlsenter("EQL");
  58.  
  59.     /* enter setf place specifiers */
  60.     s_car    = xlsenter("CAR");
  61.     s_cdr    = xlsenter("CDR");
  62.     s_get    = xlsenter("GET");
  63.     s_svalue    = xlsenter("SYMBOL-VALUE");
  64.     s_splist    = xlsenter("SYMBOL-PLIST");
  65.  
  66.     /* enter parameter list keywords */
  67.     k_test    = xlsenter(":TEST");
  68.     k_tnot    = xlsenter(":TEST-NOT");
  69.  
  70.     /* enter lambda list keywords */
  71.     k_optional    = xlsenter("&OPTIONAL");
  72.     k_rest    = xlsenter("&REST");
  73.     k_aux    = xlsenter("&AUX");
  74.  
  75.     /* enter *standard-input* and *standard-output* */
  76.     s_stdin = xlsenter("*STANDARD-INPUT*");
  77.     s_stdin->n_symvalue = newnode(FPTR);
  78.     s_stdin->n_symvalue->n_fp = stdin;
  79.     s_stdin->n_symvalue->n_savech = 0;
  80.     s_stdout = xlsenter("*STANDARD-OUTPUT*");
  81.     s_stdout->n_symvalue = newnode(FPTR);
  82.     s_stdout->n_symvalue->n_fp = stdout;
  83.     s_stdout->n_symvalue->n_savech = 0;
  84.  
  85.     /* enter the eval and apply hook variables */
  86.     s_evalhook = xlsenter("*EVALHOOK*");
  87.     s_evalhook->n_symvalue = NIL;
  88.     s_applyhook = xlsenter("*APPLYHOOK*");
  89.     s_applyhook->n_symvalue = NIL;
  90.  
  91.     /* enter the error traceback and the error break enable flags */
  92.     s_tracenable = xlsenter("*TRACENABLE*");
  93.     s_tracenable->n_symvalue = NIL;
  94.     s_tlimit = xlsenter("*TRACELIMIT*");
  95.     s_tlimit->n_symvalue = NIL;
  96.     s_breakenable = xlsenter("*BREAKENABLE*");
  97.     s_breakenable->n_symvalue = true;
  98.  
  99.     /* enter a copyright notice into the oblist */
  100.     sym = xlsenter("**Copyright-1985-by-David-Betz**");
  101.     sym->n_symvalue = true;
  102.  
  103.     /* enter type names */
  104.     a_subr    = xlsenter(":SUBR");
  105.     a_fsubr    = xlsenter(":FSUBR");
  106.     a_list    = xlsenter(":CONS");
  107.     a_sym    = xlsenter(":SYMBOL");
  108.     a_int    = xlsenter(":FIXNUM");
  109.     a_float    = xlsenter(":FLONUM");
  110.     a_str    = xlsenter(":STRING");
  111.     a_obj    = xlsenter(":OBJECT");
  112.     a_fptr    = xlsenter(":FILE");
  113. }
  114.  
  115. əəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəə